dit problem er at RegEx i php som standard er hvad man kalder "greedy". Dvs når du skriver (.+), (.*) eller (.?) vil den som standard vælge så
mange tegn som muligt.
Tilføjer du et ? efter de to +-tegn i din kode vil de i stedet være "ungreedy" og dermed matche så få tegn som muligt.
Du kan også tilføje modifieren u for at gøre det ungreedy som standard
Din RegEx skal altså se sådan her ud:
- '/(\[url=)(.+?)(\])(.+?)(\[\/url\])/' => '<a href="\\2" target="_blank" title="\\4">\\4</a>', '/(\[URL=)(.+?)(\])(.+?)(\[\/URL\])/' => '<a href="\\2" target="_blank" title="\\4">\\4</a>'
Kan se du har valgt at lave en for lowercase og en for uppercase.. Lad være med det
hvad nu hvis folk skriver [uRl= eller [URl= eller lign, så har vi pludselig et problem. Tilføj i stedet i modifieren som gør den in-case-sensitive
Indlæg senest redigeret d. 14.01.2010 08:45 af Bruger #15344